home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
351-375
/
disk_365
/
view80
/
src
/
fasttext.a
next >
Wrap
Text File
|
1992-05-06
|
1KB
|
77 lines
* Routine di stampa veloce di View80
* a0=puntatore a struct line
* a1=puntatore a destinazione
CSECT text
xdef _fasttext
xref _CharData
xref _tab
* Inizio routine
_fasttext:
movem.l d2/d3/a2/a3/a5/a6,-(a7)
moveq #0,d1 ;d1 e` usato solo per bytes
movea.l a1,a6 ;a6=inizio destinazione
move.b 4(a0),d0
addq.b #1,d0 ;d0=len+1
movea.l (a0),a0 ;a0=add
lea _CharData(a4),a5
* Main Loop
mainloop:
subq.b #1,d0
beq.b fine
move.b (a0)+,d1
cmpi.b #9,d1
beq.b tab
normal:
lea 0(a5,d1.w),a3 ;a3=sorc
movea.l a1,a2 ;a2=dest
addq #1,a1
moveq.l #7,d2
writeloop:
move.b (a3),(a2)
adda.w #256,a3
adda.w #80,a2
dbf d2,writeloop
bra.b mainloop
* Gestione tab
tab:
move.b _tab(a4),d2
beq.b normal
move.l a6,d3
sub.l a1,d3
neg.l d3
and.b #%111,d3
cmpi.b #8,d2
beq.b tab2
and.b #%11,d3
cmpi.b #4,d2
beq.b tab2
and.b #%1,d3
cmpi.b #2,d2
beq.b tab2
moveq #0,d3
tab2:
sub.b d3,d2
ext.w d2
adda.w d2,a1
bra.b mainloop
* Fine
fine:
movem.l (a7)+,d2/d3/a2/a3/a5/a6
rts
end